大家好!
昨天我們介紹了資料的傳遞方式,今天就來理解變數的宣告方式吧!
我們進入今天的主題吧!
JavaScript 有 var
、const
和 let
3 種宣告方式,明天我們會再詳細介紹。
今天先來理解全域變數和區域變數的差異吧!
var
和 let
宣告全域變數window
的屬性var a = [];
let b = [];
a; // []
b; // []
window.a; // []
window.b; // undefined
a === window.a; // true
a
會全等於 window.a
是因為使用 var
的宣告方式。
var
宣告區域變數let
宣告區塊區域變數var c = Infinity;
var fn = function (bool) {
var c = 0;
let d = 0;
if (!bool) {
var c = 1;
let d = 1;
}
return [c, d];
};
/* 只能呼叫全域變數 */
c; // Infinity
/* 沒有定義全域變數 */
d; // Uncaught ReferenceError: d is not defined
/* 優先呼叫區域變數 */
fn(true); // [0, 0]
/* c = 1` 覆蓋 c = 0
d = 1` 只在作用域內覆蓋 d = 0(區塊外不影響) */
fn(false); // [1, 0]
如果作用域沒有宣告區域變數,就會向外呼叫外層作用域的區域變數,都沒有才會呼叫全域變數。
上方沒有提到 const
是因為,const
宣告的是區塊區域常數。
儘管 const
和 let
都有相同的特性,但是 const
更為嚴謹,不僅宣告時必須賦值,宣告後也不能再更改。
差不多也到尾聲了。
如果對文章有任何疑問,歡迎於下方提問和建議!
我是 Felix,我們明天再見!